home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-07-05 | 54.5 KB | 2,852 lines |
- ; Main control loop.
- ; This is the very outer loop of the program.
-
- ; What needs to be done and when?
-
- ; Black screen start.
- ; Load title music
- ; Load title screen
- ; Fade up title screen
- ; Select options
- ; Play game.
-
- ; Playing the game involves allocating screen and
- ; level memory, loading the level, loading the
- ; samples, loading the wall graphics, playing the
- ; level, deallocating the screen memory....
-
- ; Control part should therefore:
-
- ; 1. Load Title Music
- ; 2. Load title screen
- ; 3. Fade up title screen.
- ; 4. Add 'loading' message
- ; 5. Load samples and walls
- ; 6: LOOP START
- ; 7. Option select screens
- ; 8. Free music mem, allocate level mem.
- ; 9. Load level
- ;10. Play level with options selected
- ;11. Reload title music
- ;12. Reload title screen
- ;13. goto 6
-
- INTROTUNEADDR: dc.l 0
- INTROTUNENAME: dc.b 'ab3:sounds/abreed3d.med',0
- even
- TITLESCRNADDR: dc.l 0
- TITLESCRNNAME: dc.b 'TKG1:includes/titlescrnraw1',0
- even
- TITLESCRNNAME2: dc.b 'TKG2:includes/titlescrnraw1',0
- even
- OPTSPRADDR: dc.l 0
- TITLESCRNPTR: dc.l 0
-
-
-
- ProtValA: dc.l 0
- ProtValB: dc.l 0
- ProtValC: dc.l 0
- ProtValD: dc.l 0
- ProtValE: dc.l 0
- ProtValF: dc.l 0
- ProtValG: dc.l 0
- ProtValH: dc.l 0
- ProtValI: dc.l 0
- ProtValJ: dc.l 0
- ProtValK: dc.l 0
- ProtValL: dc.l 0
- ProtValM: dc.l 0
- ProtValN: dc.l 0
-
- MASTERPLAYERONEHEALTH:
- dc.w 0
- dc.w 0
- MASTERPLAYERONEAMMO:
- ds.w 20
-
- MASTERPLAYERONESHIELD:
- dc.w 0
- dc.w 0
- MASTERPLAYERONEGUNS:
- dcb.w 10,0
-
- MASTERPLAYERTWOHEALTH:
- dc.w 0
- dc.w 0
- MASTERPLAYERTWOAMMO:
- ds.w 20
-
- MASTERPLAYERTWOSHIELD:
- dc.w 0
- dc.w 0
- MASTERPLAYERTWOGUNS:
- dcb.w 10,0
-
- KVALTOASC:
- Dc.b " ` "," 1 "," 2 "," 3 "
- dc.b " 4 "," 5 "," 6 "," 7 "
- dc.b " 8 "," 9 "
- ; 10
- Dc.b " 0 "," - "," + "," \ "
- dc.b ' ',' '," Q "," W "
- dc.b " E "," R "
- ; 20
- Dc.b " T "," Y "," U "," I "
- dc.b " O "," P "," [ "," ] "
- dc.b ' ','KP1 '
- ; 30
- Dc.b 'KP2 ','KP3 '," A "," S "
- dc.b " D "," F "," G "," H "
- dc.b " J "," K "
- ;40
- Dc.b " L "," ; "," # ",' '
- dc.b ' ','KP4 ','KP5 ','KP6 '
- dc.b ' '," Z "
- ;50
- Dc.b " X "," C "," V "," B "
- dc.b " N "," M "," , "," . "
- dc.b " / ",' '
- ;60
- Dc.b ' ','KP7 ','KP8 ','KP9 '
- dc.b 'SPC ','<-- ','TAB ','ENT '
- dc.b 'RTN ','ESC '
- ;70
- Dc.b 'DEL ',' ',' ',' '
- dc.b 'KP- ',' ','UCK ','DCK '
- dc.b 'RCK ','LCK '
- ;80
- Dc.b 'FK1 ','FK2 ','FK3 ','FK4 '
- dc.b 'FK5 ','FK6 ','FK7 ','FK8 '
- dc.b 'FK9 ','FK0 '
- ;90
- Dc.b 'KP( ','KP) ','KP/ ','KP* '
- dc.b 'KP+ ','HLP ','LSH ','RSH '
- dc.b 'CPL ','CTL '
- ;100
- Dc.b 'LAL ','RAL ','LAM ','RAM '
- dc.b ' ',' ',' ',' '
- dc.b ' ',' '
- Dc.b ' ',' ',' ',' '
- dc.b ' ',' ',' ',' '
- dc.b ' ',' '
-
- even
-
- FINISHEDLEVEL: dc.w 0
-
- _IntuitionBase: dc.l 0
- _GfxBase: dc.l 0
- MyScreen: dc.l 0
-
- MyNewScreen dc.w 0,0 left, top
- dc.w 320,16 width, height
- dc.w 1 depth
- dc.b 0,1 pens
- dc.w 0 viewmodes
- dc.w CUSTOMSCREEN+SCREENQUIET type
- dc.l 0 font
- dc.l 0 title
- dc.l 0 gadgets
- dc.l 0 bitmap
-
-
- INTUITION_REV equ 31 v1.1
- int_name INTNAME
- even
-
- START:
-
- move.b #'n',mors
-
- ************************************88
- * TAKE OUT WHEN PLAYING MODULE AGAIN
- ********************************
- ProtChkBLev1:
- PRSDF
- PRSDE
- ************************************
-
- ; move.l #PROTCALLENC,a0
- ; move.l #(ENDPROT-PROTCALLENC)/4-1,d1
- ; move.l #$75055345,d0
- ;codeitup:
- ; sub.l d0,(a0)+
- ; ror.l #1,d0
- ; dbra d1,codeitup
- ; rts
-
- ProtChkCLev1:
- PRSDA
-
- move.w #$7201,titleplanes
-
- move.l 4.w,a6
- move.l #doslibname,a1
- moveq #0,d0
- jsr -552(a6)
- move.l d0,doslib
-
- moveq #INTUITION_REV,d0 version
- lea int_name(pc),a1
- CALLEXEC OpenLibrary
- tst.l d0
- ; beq exit_false if failed then quit
- move.l d0,_IntuitionBase else save the pointer
-
- lea MyNewScreen(pc),a0
-
- CALLINT OpenScreen open a screen
- tst.l d0
- ; beq exit_closeall if failed the close both, exit
- move.l d0,MyScreen
-
- CALLINT RethinkDisplay
-
- move.l #LINKname,a0
- jsr LOADAFILE
- move.l d0,LINKFILE
-
-
- ; move.l doslib,a6
- ; move.l #LINKname,d1
- ; move.l #1005,d2
- ; jsr -30(a6)
- ; move.l d0,LLhandle
- ;
- ; move.l doslib,a6
- ; move.l d0,d1
- ; move.l #LINKSPACE,d2
- ; move.l #90000,d3
- ; jsr -42(a6)
- ;
- ; move.l doslib,a6
- ; move.l LLhandle,d1
- ; jsr -36(a6)
-
-
- PRSDS
- jsr stuff
-
- jsr _InitLowLevel
-
- ; jsr CLEARTITLEPAL
-
- ProtChkDLev1:
- PRSDT
-
- move.w #$20,$dff1dc
- move.l #titlecop,$dff080
- PRSDV
- move.w #$87c0,$dff000+dmacon
- move.w #$8020,$dff000+dmacon
- ProtChkMLev1:
- move.w $dff006,d0
- lea RVAL2-100(pc),a0
- add.w d0,100(a0)
-
- bsr GETTITLEMEM
- ProtChkELev1:
- PRSDU
- bsr CLROPTSCRN
-
- bsr SETUPTITLESCRN
-
- ; jsr _InitPlayer
-
- ; move.l #INTROTUNENAME,a0
- ; jsr _LoadModule
- ; move.l d0,INTROTUNEADDR
- PRSDY
- ; move.l d0,a0
- ; jsr _InitModule
-
- ; move.l INTROTUNEADDR,a0
- ; jsr _PlayModule
- ProtChkFLev1:
- PRSDa
- move.l #TITLESCRNNAME,TITLESCRNPTR
- bsr LOADTITLESCRN2
-
- FLASHER $0f0,$fff
-
- **********************************************
- jsr INITQUEUE
- **********************************************
-
- move.w #0,FADEVAL
- move.w #31,FADEAMOUNT
- bsr FADEUPTITLE
- PRSDB
- jsr LOAD_SFX
- jsr LOADWALLS
- jsr LOADFLOOR
- jsr LOADOBS
- PRSDZ
-
-
- move.l #backpicname,a0
- move.l #BackPicture,d0
- move.l #0,d1
- jsr QUEUEFILE
-
- ; IFNE CD32VER
- PRSDD
- ; ENDC
-
- ; jsr _StopPlayer
- PRSDW
- PRSDX
- ; jsr _RemPlayer
-
-
- ***********************************************
- jsr FLUSHQUEUE
- ***********************************************
-
- jsr PATCHSFX
-
- move.w #23,FADEAMOUNT
- bsr FADEDOWNTITLE
-
- ; bsr ASKFORDISK
-
- IFNE CD32VER
- move.l doslib,a6
- move.l #115,d1
- jsr -198(a6)
- ENDC
-
- ; move.l #newblag,$80
- ; trap #0
- ; bra JUMPPASTIT
- ; rts
- ;
- ;newblag:
-
-
- ProtChkGLev1:
- ; bsr PROTSETUP
- bsr DEFAULTGAME
-
- ; move.l INTROTUNEADDR,a0
- ; jsr _UnLoadModule
-
- ; IFEQ CD32VER
- ; jsr KInt_Init
- ; ENDC
- ProtChkHLev1:
- ; rte
- ;
- ;JUMPPASTIT:
- ;
-
- BACKTOMENU:
-
- jsr CLEARKEYBOARD
-
- cmp.b #'s',mors
- beq.s BACKTOSLAVE
- cmp.b #'m',mors
- beq.s BACKTOMASTER
- bsr READMAINMENU
- bra DONEMENU
- BACKTOMASTER:
- bsr MASTERMENU
- bra DONEMENU
- BACKTOSLAVE:
- bsr SLAVEMENU
- DONEMENU:
-
-
- bsr WAITREL
-
- ; IFEQ CD32VER
- ; move.l OLDKINT,$68.w
- ; ENDC
-
-
-
-
- bsr CLRSPRITES
-
- move.w #23,FADEAMOUNT
- bsr FADEUPTITLE
- move.w #31,FADEAMOUNT
- bsr FADEDOWNTITLE
-
- move.w #$0201,titleplanes
-
- FILTER
-
- tst.b SHOULDQUIT
- bne QUITTT
-
- bsr RELEASETITLEMEM
-
-
- ; jsr LOADBOTPIC
-
-
- clr.b FINISHEDLEVEL
-
- move.w #0,PLR1s_angpos
- move.w #0,PLR2s_angpos
- move.w #0,PLR1_angpos
- move.w #0,PLR2_angpos
- move.b #0,PLR1_GunSelected
- move.b #0,PLR2_GunSelected
-
- **************************8
- clr.b NASTY
- ***************************
-
- move.l #MASTERPLAYERONEHEALTH,a0
- move.l #MASTERPLAYERONESHIELD,a1
- move.l #PLAYERONEHEALTH,a2
- move.l #PLAYERONESHIELD,a3
- move.l #PLAYERTWOHEALTH,a4
- move.l #PLAYERTWOSHIELD,a5
-
- REPT 11
- move.l (a0),(a2)+
- move.l (a0)+,(a4)+
- ENDR
-
- REPT 6
- move.l (a1),(a3)+
- move.l (a1)+,(a5)+
- ENDR
-
- *************************************
- jsr INITQUEUE
-
- move.l #MEMF_CHIP,d1
- move.l #10240*8,d0
- move.l 4.w,a6
- jsr -198(a6)
- move.l d0,scrn
-
- move.l #MEMF_CHIP,d1
- move.l #10240*8,d0
- move.l 4.w,a6
- jsr -198(a6)
- move.l d0,scrn2
-
- move.l #borderpacked,d0
- moveq #0,d1
- move.l scrn,a0
- lea WorkSpace,a1
- lea $0,a2
- jsr unLHA
-
- move.l #borderpacked,d0
- moveq #0,d1
- move.l scrn2,a0
- lea WorkSpace,a1
- lea $0,a2
- jsr unLHA
-
- ; move.l #MEMF_CHIP,TYPEOFMEM
- ; move.l #bordername,a0
- ; move.l #scrn,d0
- ; move.l #0,d1
- ; jsr QUEUEFILE
- ;
- ; ifeq CHEESEY
- ; move.l #bordername,a0
- ; move.l #scrn2,d0
- ; move.l #0,d1
- ; jsr QUEUEFILE
- ; endc
- ;
- ; jsr FLUSHQUEUE
-
- ifne CHEESEY
-
- move.l scrn,scrn2
-
- endc
-
- *************************************
-
- jsr PLAYTHEGAME
-
- *************************************
- move.l scrn,a1
- move.l #10240*8,d0
- move.l 4.w,a6
- jsr -210(a6)
- ifeq CHEESEY
- move.l scrn2,a1
- move.l #10240*8,d0
- move.l 4.w,a6
- jsr -210(a6)
- endc
- *************************************
-
- ; bsr FREEBOTMEM
-
- ; bra QUITTT
-
- tst.b FINISHEDLEVEL
- beq dontusestats
-
- move.l #MASTERPLAYERONEHEALTH,a0
- move.l #MASTERPLAYERONESHIELD,a1
- move.l #PLAYERONEHEALTH,a2
- move.l #PLAYERONESHIELD,a3
-
- REPT 11
- move.l (a2)+,(a0)+
- ENDR
-
- REPT 6
- move.l (a3)+,(a1)+
- ENDR
-
- dontusestats:
-
- ; bsr PASSLINETOGAME
- ; bsr GETSTATS
-
- bsr GETTITLEMEM
- bsr CLROPTSCRN
- bsr SETUPTITLESCRN
-
- move.l #TITLESCRNNAME2,TITLESCRNPTR
- bsr LOADTITLESCRN2
- move.w #$7201,titleplanes
-
- move.w #$20,$dff1dc
- move.l #titlecop,$dff080
- move.w #$87c0,$dff000+dmacon
- move.w #$8020,$dff000+dmacon
-
- move.w #0,FADEVAL
- move.w #31,FADEAMOUNT
- bsr FADEUPTITLE
-
- move.w #23,FADEAMOUNT
- bsr FADEDOWNTITLE
-
- ; IFEQ CD32VER
- ; jsr KInt_Init
- ; ENDC
-
- bra BACKTOMENU
-
- QUITTT:
-
- move.l LEVELDATA,d1
- move.l d1,a1
- move.l #120000,d0
- move.l 4.w,a6
- jsr -210(a6)
-
- move.l TEXTSCRN,d1
- move.l d1,a1
- move.l #10240*2,d0
- move.l 4.w,a6
- jsr -210(a6)
-
- move.l FASTBUFFER,d1
- move.l #2*320*256,d0
- move.l 4.w,a6
- jsr -210(a6)
-
- ; jsr RELEASEWALLMEM
- jsr RELEASESAMPMEM
- jsr RELEASEFLOORMEM
- jsr RELEASEOBJMEM
-
- move.l old,$dff080
- move.l 4.w,a6
- lea VBLANKInt,a1
- moveq #INTB_COPER,d0
- jsr _LVORemIntServer(a6)
-
- move.l 4.w,a6
- lea KEYInt,a1
- moveq #INTB_PORTS,d0
- jsr _LVORemIntServer(a6)
-
- move.w #$f8e,$dff1dc
-
- move.l old,$dff080
- move.w _storeint,d0
- or.w d0,$dff000+intena
-
- ; move.l 4.w,a6
- ; jsr _LVOPermit(a6)
-
-
- move.l #0,d0
-
- rts
-
- SSTACK: dc.l 0
-
- backpicname: dc.b "tkg1:includes/rawbackpacked"
- dc.b 0
-
- bordername: dc.b "TKG2:includes/newborderRAW",0
- even
- borderpacked: incbin "ab3:includes/newborderPACKED"
-
- ; KEY OPTIONS:
- CONTROLBUFFER:
- turn_left_key:
- dc.b $4f
- turn_right_key:
- dc.b $4e
- forward_key:
- dc.b $4c
- backward_key:
- dc.b $4d
- fire_key:
- dc.b $65
- operate_key:
- dc.b $40
- run_key:
- dc.b $61
- force_sidestep_key:
- dc.b $67
- sidestep_left_key:
- dc.b $39
- sidestep_right_key:
- dc.b $3a
- duck_key:
- dc.b $22
- look_behind_key:
- dc.b $28
- jump_key:
- dc.b $f
- look_up_key:
- dc.b 27
- look_down_key:
- dc.b 42
- centre_view_key:
- dc.b 41
- next_weapon_key:
- dc.b 68
-
- templeftkey: dc.b 0
- temprightkey: dc.b 0
- tempslkey: dc.b 0
- tempsrkey: dc.b 0
-
- even
-
- GETSTATS:
- ; CHANGE PASSWORD INTO RAW DATA
-
- rts
-
-
- SETPLAYERS:
-
- move.w PLOPT,d0
- add.b #'a',d0
- move.b d0,LEVA
- move.b d0,LEVB
- move.b d0,LEVC
- move.b d0,LEVD
- move.b d0,LEVE
-
- cmp.b #'s',mors
- beq SLAVESETUP
- cmp.b #'m',mors
- beq MASTERSETUP
- st NASTY
- onepla:
- rts
-
- NASTY: dc.w 0
-
- MASTERSETUP:
- clr.b NASTY
- move.w PLOPT,d0
- jsr SENDFIRST
-
- move.w Rand1,d0
- jsr SENDFIRST
-
- bsr TWOPLAYER
- rts
-
- SLAVESETUP:
- CLR.B NASTY
- jsr RECFIRST
- move.w d0,PLOPT
- add.b #'a',d0
- move.b d0,LEVA
- move.b d0,LEVB
- move.b d0,LEVC
- move.b d0,LEVD
- move.b d0,LEVE
-
- jsr RECFIRST
- move.w d0,Rand1
- bsr TWOPLAYER
-
-
- rts
-
- ********************************************************
-
- ASKFORDISK:
- lea RVAL1+300(pc),a0
- lea RVAL2+900(pc),a1
- PRSDD
- move.w #10,OptScrn
- bsr DRAWOPTSCRN
-
- ProtChkNLev1:
- .wtrel:
- btst #7,$bfe001
- beq.s .wtrel
-
- wtclick:
- add.w #$235,-300(a0)
- add.w #$4533,-900(a0)
- btst #6,$bfe001
- bne.s wtclick
-
- rts
-
- CLRSPRITES:
- move.l #nullspr,d0
- move.w d0,tsp0l
- move.w d0,tsp1l
- move.w d0,tsp2l
- move.w d0,tsp3l
- move.w d0,tsp4l
- move.w d0,tsp5l
- move.w d0,tsp6l
- move.w d0,tsp7l
- swap d0
- move.w d0,tsp0h
- move.w d0,tsp1h
- move.w d0,tsp2h
- move.w d0,tsp3h
- move.w d0,tsp4h
- move.w d0,tsp5h
- move.w d0,tsp6h
- move.w d0,tsp7h
- rts
-
- ********************************************************
-
- READMAINMENU:
-
-
- move.b #'n',mors
-
- move.w MAXLEVEL,d0
-
- move.l #CURRENTLEVELLINE,a1
- muls #40,d0
- move.l LINKFILE,a0
- add.l #LevelName,a0
- add.l d0,a0
- bsr PUTINLINE
-
- ; Stay here until 'play game' is selected.
-
- move.w #0,OptScrn
- bsr DRAWOPTSCRN
- move.w #0,OPTNUM
-
- bsr HIGHLIGHT
-
-
-
- bsr WAITREL
- .rdlop:
-
- bsr CHECKMENU
- tst.w d0
- blt.s .rdlop
-
-
- ; tst.w d0
- ; bne.s .nonextlev
- ; move.w LEVELSELECTED,d0
- ; add.w #1,d0
- ; cmp.w MAXLEVEL,d0
- ; blt .nowrap
- ; moveq #0,d0
- ;.nowrap:
- ; and.w #$f,d0
- ; move.w d0,LEVELSELECTED
- ; move.l #CURRENTLEVELLINE,a1
- ; muls #40,d0
- ; move.l #LEVEL_OPTS,a0
- ; add.l d0,a0
- ; bsr PUTINLINE
- ; bsr JUSTDRAWIT
- ; bra .rdlop
-
- .nonextlev:
-
- cmp.w #1,d0
- bne .noopt
-
- bra MASTERMENU
-
- .noopt:
-
- ; cmp.w #5,d0
- ; bne.s .noqui
- ; st SHOULDQUIT
- ; bra playgame
- ;.noqui
-
- cmp.w #2,d0
- beq playgame
-
- cmp.w #3,d0
- bne .nocontrol
-
- bsr CHANGECONTROLS
-
- move.w #0,OptScrn
- bsr DRAWOPTSCRN
- move.w #0,OPTNUM
-
- bsr HIGHLIGHT
-
- bsr WAITREL
- bra .rdlop
-
- .nocontrol:
-
- cmp.w #4,d0
- bne .nocred
- bsr SHOWCREDITS
- move.w #0,OptScrn
- bsr DRAWOPTSCRN
- move.w #1,OPTNUM
-
- bsr HIGHLIGHT
-
- bsr WAITREL
- bra .rdlop
-
- .nocred:
-
- cmp.w #5,d0
- bne .noload
-
- bsr WAITREL
-
- jsr LOADPOSITION
-
- move.w #0,OptScrn
- bsr DRAWOPTSCRN
- move.w #1,OPTNUM
-
- bsr HIGHLIGHT
-
- bsr WAITREL
- bra .rdlop
-
- .noload:
- cmp.w #6,d0
- bne playgame
- bsr WAITREL
-
- jsr SAVEPOSITION
-
- move.w #0,OptScrn
- bsr DRAWOPTSCRN
- move.w #1,OPTNUM
-
- bsr HIGHLIGHT
-
- bsr WAITREL
- bra .rdlop
-
-
- ;
- ; move.l #PASSWORDLINE+12,a0
- ; moveq #15,d2
- ;.clrline:
- ; move.b #32,(a0)+
- ; dbra d2,.clrline
- ; move.w #0,OptScrn
- ; bsr DRAWOPTSCRN
- ;
- ; IFEQ CD32VER
- ; clr.b lastpressed
- ; move.l #PASSWORDLINE+12,a0
- ; move.w #0,d1
- ;.ENTERPASS:
- ; tst.b lastpressed
- ; beq .ENTERPASS
- ; move.b lastpressed,d2
- ; move.b #0,lastpressed
- ; move.l #KVALTOASC,a1
- ;
- ; cmp.l #'<-- ',(a1,d2.w*4)
- ; bne .nodel
- ;
- ; tst.b d1
- ; beq .nodel
- ;
- ; subq #1,d1
- ; move.b #32,-(a0)
- ; movem.l d0-d7/a0-a6,-(a7)
- ; bsr JUSTDRAWIT
- ; movem.l (a7)+,d0-d7/a0-a6
- ; bra .ENTERPASS
- ;
- ;.nodel:
- ;
- ; cmp.l #'RTN ',(a1,d2.w*4)
- ; beq .FORGETIT
- ; cmp.l #'ESC ',(a1,d2.w*4)
- ; beq .FORGETIT
- ; move.b 1(a1,d2.w*4),d2
- ; cmp.b #65,d2
- ; blt .ENTERPASS
- ; cmp.b #'Z',d2
- ; bgt .ENTERPASS
- ; move.b d2,(a0)+
- ; move.w #0,OptScrn
- ; movem.l d0-d7/a0-a6,-(a7)
- ; bsr JUSTDRAWIT
- ; movem.l (a7)+,d0-d7/a0-a6
- ; add.w #1,d1
- ; cmp.w #16,d1
- ; blt .ENTERPASS
- ;
- ; ENDC
- ; IFNE CD32VER
- ; move.l #PASSWORDLINE+12,a0
- ; move.w #15,d0
- ;.ENTERPASS:
- ; bsr GETACHAR
- ; dbra d0,.ENTERPASS
- ; ENDC
- ;
- ; bsr PASSLINETOGAME
- ; tst.w d0
- ; bne .FORGETIT
- ;
- ; bsr GETSTATS
- ; move.w MAXLEVEL,d0
- ; move.l #CURRENTLEVELLINE,a1
- ; muls #40,d0
- ; move.l #LEVEL_OPTS,a0
- ; add.l d0,a0
- ; bsr PUTINLINE
- ;
- ;.FORGETIT:
- ; bsr WAITREL
- ; bsr CALCPASSWORD
- ;
- ; move.w #0,OptScrn
- ; bsr DRAWOPTSCRN
- ;
- ; move.w #1,OPTNUM
- ;
- ; bsr HIGHLIGHT
- ;
- ; bra .rdlop
-
- playgame:
- move.w MAXLEVEL,PLOPT
- rts
-
- SHOULDQUIT: dc.w 0
-
- LEVELSELECTED:
- dc.w 0
-
- IFNE CD32VER
- GETACHAR:
- moveq #0,d7
- move.b #'A',(a0)
- movem.l d0-d7/a0-a6,-(a7)
- jsr JUSTDRAWIT
- movem.l (a7)+,d0-d7/a0-a6
-
- .wtnum:
- btst #1,$dff00c
- sne d1
- btst #1,$dff00d
- sne d2
- btst #0,$dff00c
- sne d3
- btst #0,$dff00d
- sne d4
-
- eor.b d1,d3
- eor.b d2,d4
-
- tst.b d1
- beq.s .NODELETE
- cmp.w #15,d0
- beq.s .NODELETE
- move.b #32,(a0)
- subq #1,a0
- addq #1,d0
- move.b (a0),d7
- sub.b #'A',d7
- movem.l d0-d7/a0-a6,-(a7)
- jsr JUSTDRAWIT
- movem.l (a7)+,d0-d7/a0-a6
- jsr WAITFORNOPRESS
- bra .wtnum
- .NODELETE
-
- tst.b d4
- bne.s .PREVNUM
- tst.b d3
- bne.s .NEXTNUM
- btst #7,$bfe001
- bne.s .wtnum
- addq #1,a0
- jsr WAITFORNOPRESS
- rts
-
- .PREVNUM:
- subq #1,d7
- bge.s .nonegg
- moveq #15,d7
- .nonegg:
- move.b d7,d1
- add.b #'A',d1
- move.b d1,(a0)
- movem.l d0-d7/a0-a6,-(a7)
- jsr JUSTDRAWIT
- movem.l (a7)+,d0-d7/a0-a6
-
- jsr WAITFORNOPRESS
-
- bra .wtnum
-
- .NEXTNUM:
- addq #1,d7
- cmp.w #15,d7
- ble.s .nobigg
- moveq #0,d7
- .nobigg:
- move.b d7,d1
- add.b #'A',d1
- move.b d1,(a0)
- movem.l d0-d7/a0-a6,-(a7)
- jsr JUSTDRAWIT
- movem.l (a7)+,d0-d7/a0-a6
- jsr WAITFORNOPRESS
- bra .wtnum
- rts
- ENDC
-
-
- MASTERMENU:
-
- move.b #'m',mors
-
- move.w #0,LEVELSELECTED
-
- move.w #0,d0
- move.l #CURRENTLEVELLINEM,a1
- muls #40,d0
- move.l LINKFILE,a0
- add.l #LevelName,a0
- add.l d0,a0
- bsr PUTINLINE
-
- ; Stay here until 'play game' is selected.
-
- move.w #4,OptScrn
- bsr DRAWOPTSCRN
- move.w #1,OPTNUM
-
- bsr HIGHLIGHT
-
- bsr WAITREL
- .rdlop:
- bsr CHECKMENU
- tst.w d0
- blt.s .rdlop
- bsr WAITREL
-
- cmp.w #1,d0
- bne.s .nonextlev
-
- move.w LEVELSELECTED,d0
- add.w #1,d0
- cmp.w MAXLEVEL,d0
- blt .nowrap
- moveq #0,d0
- .nowrap:
- ; and.w #$f,d0
- move.w d0,LEVELSELECTED
- move.l #CURRENTLEVELLINEM,a1
- muls #40,d0
- move.l LINKFILE,a0
- add.l #LevelName,a0
- add.l d0,a0
- bsr PUTINLINE
- bsr JUSTDRAWIT
- bra .rdlop
-
- .nonextlev:
-
- cmp.w #2,d0
- beq .playgame
-
- cmp.w #0,d0
- bne .noopt
-
- bra SLAVEMENU
-
- .noopt:
-
- cmp.w #3,d0
- bne .nocontrol
-
- bsr CHANGECONTROLS
-
- move.w #4,OptScrn
- bsr DRAWOPTSCRN
- move.w #0,OPTNUM
-
- bsr HIGHLIGHT
-
- bsr WAITREL
- bra .rdlop
-
- .nocontrol:
-
- .playgame
-
- move.w LEVELSELECTED,PLOPT
- rts
-
- SLAVEMENU:
-
- move.b #'s',mors
-
- ; Stay here until 'play game' is selected.
-
- move.w #5,OptScrn
- bsr DRAWOPTSCRN
- move.w #1,OPTNUM
-
- bsr HIGHLIGHT
-
- bsr WAITREL
- .rdlop:
- bsr CHECKMENU
- tst.w d0
- blt.s .rdlop
- bsr WAITREL
-
- cmp.w #1,d0
- beq .playgame
-
- cmp.w #0,d0
- bne .noopt
-
- bra READMAINMENU
-
- .noopt:
-
- cmp.w #2,d0
- bne .nocontrol
-
- bsr CHANGECONTROLS
-
- move.w #5,OptScrn
- bsr DRAWOPTSCRN
- move.w #0,OPTNUM
-
- bsr HIGHLIGHT
-
- bsr WAITREL
- bra .rdlop
-
- .nocontrol:
- .playgame:
-
- rts
-
- STATBACK: ds.w 34
-
- TWOPLAYER:
-
- move.w #200,PLAYERONEHEALTH
- move.w #200,PLAYERTWOHEALTH
-
- st.b PLAYERONEGUNS+1
- st.b PLAYERONEGUNS+3
- st.b PLAYERONEGUNS+5
- st.b PLAYERONEGUNS+7
- st.b PLAYERONEGUNS+9
- st.b PLAYERONEGUNS+11
- st.b PLAYERONEGUNS+13
- st.b PLAYERONEGUNS+15
- st.b PLAYERONEGUNS+17
- st.b PLAYERONEGUNS+19
-
- st.b PLAYERTWOGUNS+1
- st.b PLAYERTWOGUNS+3
- st.b PLAYERTWOGUNS+5
- st.b PLAYERTWOGUNS+7
- st.b PLAYERTWOGUNS+9
- st.b PLAYERTWOGUNS+11
- st.b PLAYERTWOGUNS+13
- st.b PLAYERTWOGUNS+15
- st.b PLAYERTWOGUNS+17
- st.b PLAYERTWOGUNS+19
-
- move.l #PLAYERONEAMMO,a0
- move.l #PLAYERTWOAMMO,a1
- move.w #19,d1
- .putinvals
- jsr GetRand
- and.w #63,d0
- add.w #5,d0
- move.w d0,(a0)+
- move.w d0,(a1)+
- dbra d1,.putinvals
-
- rts
-
- move.w #0,OldEnergy
- move.w #127,Energy
- jsr EnergyBar
-
- move.w #63,OldAmmo
- move.w #0,Ammo
- jsr AmmoBar
- move.w #0,OldAmmo
-
- move.b #0,PLR1_GunSelected
-
- move.b #0,PLR2_GunSelected
- rts
-
- newdum:
- rts
-
- DEFAULTGAME:
- move.w #0,MAXLEVEL
-
- move.l #MASTERPLAYERONEHEALTH,a0
- move.l #MASTERPLAYERONESHIELD,a1
- move.l #0,(a0)+
- move.l #0,(a0)+
- move.l #0,(a0)+
- move.l #0,(a0)+
- move.l #0,(a0)+
- move.l #0,(a0)+
- move.l #0,(a0)+
- move.l #0,(a0)+
- move.l #0,(a0)+
- move.l #0,(a0)+
- move.l #0,(a0)+
-
- move.l #0,(a1)+
- move.l #0,(a1)+
- move.l #0,(a1)+
- move.l #0,(a1)+
- move.l #0,(a1)+
- move.l #0,(a1)+
-
- move.w #200,MASTERPLAYERONEHEALTH
- move.w #$ff,MASTERPLAYERONEGUNS
-
- move.l LINKFILE,a5
- add.l #GunBulletTypes,a5
- move.w (a5),d0
-
- move.l #MASTERPLAYERONEAMMO,a5
- move.w #20,(a5,d0.w*2)
-
- rts
-
- CHKPROT: dc.w 0
-
- GETPARITY:
- move.w #6,d3
- .calcparity:
- btst d3,d0
- beq.s .nochange
- bchg #7,d0
- .nochange:
- dbra d3,.calcparity
- rts
-
- CHECKPARITY:
- move.w #6,d3
- move.b #$0,d2
- .calcparity:
- btst d3,d0
- beq.s .nochange
- bchg #7,d2
- .nochange:
- dbra d3,.calcparity
- move.b d0,d1
- and.b #$80,d1
- eor.b d1,d2
- sne.s d5
- rts
-
- CALCPASSWORD:
- rts
-
- PASSLINETOGAME:
- rts
-
- illega:
-
- move.w #-1,d0
-
- rts
-
- PASSBUFFER:
- ds.b 8
-
- CHECKBUFFER: ds.b 8
-
- PASS:
- ds.b 16
-
- **************************************************
-
- CHANGECONTROLS:
-
- move.w #6,OptScrn
- bsr DRAWOPTSCRN
- move.w #0,OPTNUM
- bsr HIGHLIGHT
- bsr WAITREL
-
- .rdlop:
- bsr CHECKMENU
- tst.w d0
- blt.s .rdlop
-
- cmp.w #17,d0
- beq .backtomain
-
- move.l #KEY_LINES,a0
- move.w d0,d1
- muls #40,d1
- add.l d1,a0
- add.w #32,a0
- move.l #$20202020,(a0)
- movem.l d0/a0,-(a7)
- bsr JUSTDRAWIT
- movem.l (a7)+,d0/a0
-
- clr.b lastpressed
-
- .wtkey
- tst.b lastpressed
- beq .wtkey
-
- move.l #CONTROLBUFFER,a1
- moveq #0,d1
- move.b lastpressed,d1
- move.b d1,(a1,d0.w)
- move.l #KVALTOASC,a1
- move.l (a1,d1.w*4),(a0)
- bsr JUSTDRAWIT
- bsr WAITREL
- bra .rdlop
-
- .backtomain:
- rts
-
- **************************************************
-
-
- MAXLEVEL: dc.w 0
-
- SHOWCREDITS:
- move.w #2,OptScrn
- bsr DRAWOPTSCRN
- move.w #0,OPTNUM
- bsr HIGHLIGHT
-
- bsr WAITREL
-
- .rdlop:
- bsr CHECKMENU
- tst.w d0
- blt.s .rdlop
-
- bra READMAINMENU
-
- HELDDOWN:
- dc.w 0
-
- WAITREL:
-
- movem.l d0/d1/d2/d3,-(a7)
-
- move.l #KeyMap,a5
- WAITREL2:
- btst #7,$bfe001
- beq.s WAITREL2
-
- IFEQ CD32VER
- tst.b $40(a5)
- bne.s WAITREL2
- tst.b $44(a5)
- bne.s WAITREL2
- tst.b $4c(a5)
- bne.s WAITREL2
- tst.b $4d(a5)
- bne.s WAITREL2
- ENDC
-
- btst #1,$dff00c
- sne d0
- btst #1,$dff00d
- sne d1
- btst #0,$dff00c
- sne d2
- btst #0,$dff00d
- sne d3
-
- eor.b d0,d2
- eor.b d1,d3
- tst.b d2
- bne.s WAITREL2
- tst.b d3
- bne.s WAITREL2
-
-
- movem.l (a7)+,d0/d1/d2/d3
- rts
-
- PUTINLINE:
- moveq #39,d0
- pill
- move.b (a0)+,(a1)+
- dbra d0,pill
- rts
-
- CHECKMENU:
- btst #1,$dff00c
- sne d0
- btst #1,$dff00d
- sne d1
- btst #0,$dff00c
- sne d2
- btst #0,$dff00d
- sne d3
-
- eor.b d0,d2
- eor.b d1,d3
-
- move.l #KeyMap,a5
- move.b $4c(a5),d0
- move.b $4d(a5),d1
- or.b d1,d3
- or.b d0,d2
-
- move.w OptScrn,d0
- move.l #MENUDATA,a0
- move.l 4(a0,d0.w*8),a0 ; opt data
-
- move.w OPTNUM,d0
-
- tst.b d2
- beq.s NOPREV
-
-
- sub.w #1,d0
- bge.s NOPREV
-
- move.w #0,d0
-
- NOPREV:
-
- tst.b d3
- beq.s NONEXT
-
- bsr WAITREL
-
- add.w #1,d0
- tst.w (a0,d0.w*8)
- bge.s NONEXT
-
- subq #1,d0
-
- NONEXT:
-
- cmp.w OPTNUM,d0
- beq.s .nochange
-
- bsr HIGHLIGHT
- move.w d0,OPTNUM
- bsr HIGHLIGHT
- bsr WAITREL
-
- .nochange:
-
- move.w #-1,d0
-
- btst #7,$bfe001
- beq.s select
- move.b $40(a5),d1
- or.b $44(a5),d1
- tst.b d1
- beq.s noselect
-
- select:
- bsr WAITREL
- move.w OPTNUM,d0
- noselect:
-
- rts
-
- HIGHLIGHT:
-
- SAVEREGS
-
- move.w OptScrn,d0
- move.l #MENUDATA,a0
- move.l 4(a0,d0.w*8),a0
- move.w OPTNUM,d0
- lea (a0,d0.w*8),a0
- move.w (a0)+,d0 ;left
- move.w (a0)+,d1 ;top
- move.w (a0)+,d2 ;width
-
- muls #16*8,d1
- move.l OPTSPRADDR,a1
- add.w d1,a1
- add.w #8+16,a1
- move.l #SCRTOSPR2,a5
- adda.w d0,a5
- adda.w d0,a5
-
- NOTLOP:
-
- move.w (a5)+,d3
- lea (a1,d3.w),a2
- not.b (a2)
- not.b 16(a2)
- not.b 32(a2)
- not.b 48(a2)
- not.b 64(a2)
- not.b 80(a2)
- not.b 96(a2)
- not.b 112(a2)
- not.b 128(a2)
- subq #1,d2
- bgt.s NOTLOP
-
- GETREGS
- rts
-
- SCRTOSPR2:
- val SET 0
- REPT 6
- dc.w val+0
- dc.w val+1
- dc.w val+2
- dc.w val+3
- dc.w val+4
- dc.w val+5
- dc.w val+6
- dc.w val+7
- val SET val+258*16
- ENDR
-
- CLROPTSCRN:
-
- move.l #$2cdfea,d0
- move.w (a4,d0.l),d0
- add.w d0,RVAL2
-
- move.l OPTSPRADDR,a0
- lea 16(a0),a1
- lea 16+(258*16)(a0),a2
- lea 16+(258*16*2)(a0),a3
- lea 16+(258*16*3)(a0),a4
- lea 258*16(a4),a0
-
- move.w #256,d0
- moveq #0,d1
- CLRLOP:
- move.l d1,(a0)+
- move.l d1,(a0)+
- move.l d1,(a0)+
- move.l d1,(a0)+
- move.l d1,(a1)+
- move.l d1,(a1)+
- move.l d1,(a1)+
- move.l d1,(a1)+
- move.l d1,(a2)+
- move.l d1,(a2)+
- move.l d1,(a2)+
- move.l d1,(a2)+
- move.l d1,(a3)+
- move.l d1,(a3)+
- move.l d1,(a3)+
- move.l d1,(a3)+
- move.l d1,(a4)+
- move.l d1,(a4)+
- move.l d1,(a4)+
- move.l d1,(a4)+
- dbra d0,CLRLOP
-
- move.l OPTSPRADDR,a0
- move.w #44*256+64,(a0)
- move.w #44*256+2,8(a0)
- add.l #258*16,a0
-
- move.w #44*256+96,(a0)
- move.w #44*256+2,8(a0)
- add.l #258*16,a0
-
- move.w #44*256+128,(a0)
- move.w #44*256+2,8(a0)
- add.l #258*16,a0
-
- move.w #44*256+160,(a0)
- move.w #44*256+2,8(a0)
- add.l #258*16,a0
-
- move.w #44*256+192,(a0)
- move.w #44*256+2,8(a0)
-
- rts
-
- DRAWOPTSCRN:
-
- bsr CLROPTSCRN
-
- JUSTDRAWIT:
-
- move.l #font,a0
- move.l #MENUDATA,a1
- move.w OptScrn,d0
- move.l (a1,d0.w*8),a1
-
- move.l OPTSPRADDR,a3
- add.l #16,a3
- moveq #0,d2
-
- move.w #31,d0
- linelop:
- move.w #39,d1
- move.l #SCRTOSPR,a4
- move.l a3,a2
- charlop:
- move.b (a1)+,d2
- lea (a0,d2.w*8),a5
- move.b (a5)+,(a2)
- move.b (a5)+,16(a2)
- move.b (a5)+,32(a2)
- move.b (a5)+,48(a2)
- move.b (a5)+,64(a2)
- move.b (a5)+,80(a2)
- move.b (a5)+,96(a2)
- move.b (a5),112(a2)
- add.w (a4)+,a2
- dbra d1,charlop
- add.w #16*8,a3
- dbra d0,linelop
-
- rts
-
- SCRTOSPR:
- dc.w 1,1,1,1,1,1,1,258*16-7
- dc.w 1,1,1,1,1,1,1,258*16-7
- dc.w 1,1,1,1,1,1,1,258*16-7
- dc.w 1,1,1,1,1,1,1,258*16-7
- dc.w 1,1,1,1,1,1,1,258*16-7
- dc.w 1,1,1,1,1,1,1,258*16-7
-
- OPTNUM: dc.w 0
- OptScrn: dc.w 0
-
- SAVEGAMENAME: dc.b "tkg2:boot.dat",0
- even
-
- SAVEGAMEPOS: dc.l 0
- SAVEGAMELEN: dc.l 0
-
- LOADPOSITION:
-
- move.l #SAVEGAMENAME,a0
- move.l #SAVEGAMEPOS,d0
- move.l #SAVEGAMELEN,d1
- jsr INITQUEUE
- jsr QUEUEFILE
- jsr FLUSHQUEUE
-
- move.l SAVEGAMEPOS,a2 ; address of first saved game.
-
- move.l #LSLOTA,a4
-
- move.l a2,a3
- move.w #5,d7
- .findlevs:
-
- move.l a4,a1
- move.w (a3),d1
- muls #40,d1
- move.l LINKFILE,a0
- add.l #LevelName,a0
- add.l d1,a0
- jsr PUTINLINE
- add.l #80,a4
- add.w #2+(22*2)+(12*2),a3
-
- dbra d7,.findlevs
-
- move.w #8,OptScrn
- move.w #0,OPTNUM
-
- bsr DRAWOPTSCRN
- bsr HIGHLIGHT
- bsr WAITREL
-
- .rdlop:
- bsr CHECKMENU
- tst.w d0
- blt.s .rdlop
-
- cmp.w #6,d0
- beq.s .noload
-
- move.l SAVEGAMEPOS,a0
- muls #2+(22*2)+(12*2),d0
- add.l d0,a0
-
- move.l #MASTERPLAYERONEHEALTH,a1
- move.w (a0)+,MAXLEVEL
-
- REPT 11
- move.l (a0)+,(a1)+
- ENDR
- REPT 6
- move.l (a0)+,(a1)+
- ENDR
-
- move.w MAXLEVEL,d0
- move.l #CURRENTLEVELLINE,a1
- muls #40,d0
- move.l LINKFILE,a0
- add.l #LevelName,a0
- add.l d0,a0
- bsr PUTINLINE
-
- .noload:
-
- move.l SAVEGAMEPOS,a1
- move.l SAVEGAMELEN,d0
- CALLEXEC FreeMem
-
- rts
-
- SAVEPOSITION:
-
-
- move.l #SAVEGAMENAME,a0
- move.l #SAVEGAMEPOS,d0
- move.l #SAVEGAMELEN,d1
- jsr INITQUEUE
- jsr QUEUEFILE
- jsr FLUSHQUEUE
-
- move.l SAVEGAMEPOS,a2 ; address of first saved game.
-
- move.l #SSLOTA,a4
-
- move.l a2,a3
- move.w #5,d7
- .findlevs:
-
- move.l a4,a1
- move.w (a3),d1
- muls #40,d1
- move.l LINKFILE,a0
- add.l #LevelName,a0
- add.l d1,a0
- jsr PUTINLINE
- add.l #80,a4
- add.w #2+(22*2)+(12*2),a3
-
- dbra d7,.findlevs
-
- move.w #9,OptScrn
- move.w #0,OPTNUM
-
- bsr DRAWOPTSCRN
- bsr HIGHLIGHT
- bsr WAITREL
-
- .rdlop:
- bsr CHECKMENU
- tst.w d0
- blt.s .rdlop
-
- cmp.w #6,d0
- beq .nosave
-
- move.l SAVEGAMEPOS,a0
- muls #2+(22*2)+(12*2),d0
- add.l d0,a0
-
- move.l #MASTERPLAYERONEHEALTH,a1
- move.w MAXLEVEL,(a0)+
-
- REPT 11
- move.l (a1)+,(a0)+
- ENDR
- REPT 6
- move.l (a1)+,(a0)+
- ENDR
-
- move.l old,$dff080
- move.w #$8020,$dff000+intena
-
- move.l _IntuitionBase,a6
- jsr _LVORethinkDisplay(a6)
-
- move.l doslib,a6
- move.l #SAVEGAMENAME,d1
- move.l #1006,d2
- jsr -30(a6)
- move.l d0,handle
-
- move.l doslib,a6
- move.l SAVEGAMEPOS,d2
- move.l handle,d1
- move.l SAVEGAMELEN,d3
- jsr _LVOWrite(a6)
-
- move.l doslib,a6
- move.l handle,d1
- jsr -36(a6)
-
- move.l doslib,a6
- move.l #200,d1
- jsr -198(a6)
-
- move.w #$0020,$dff000+intena
- move.l #titlecop,$dff080
-
- .nosave:
-
- move.l SAVEGAMEPOS,a1
- move.l SAVEGAMELEN,d0
- CALLEXEC FreeMem
-
- rts
-
- MENUDATA:
- ;0
- dc.l ONEPLAYERMENU_TXT
- dc.l ONEPLAYERMENU_OPTS
- ;1
- dc.l INSTRUCTIONS_TXT
- dc.l INSTRUCTIONS_OPTS
- ;2
- dc.l CREDITMENU_TXT
- dc.l CREDITMENU_OPTS
- ;3
- dc.l ASKFORDISK_TXT
- dc.l ASKFORDISK_OPTS
- ;4
- ; dc.l ONEPLAYERMENU_TXT
- ; dc.l ONEPLAYERMENU_OPTS
- dc.l MASTERPLAYERMENU_TXT
- dc.l MASTERPLAYERMENU_OPTS
- ;5
- dc.l SLAVEPLAYERMENU_TXT
- dc.l SLAVEPLAYERMENU_OPTS
- ;6
- dc.l CONTROL_TXT
- dc.l CONTROL_OPTS
- ;7
- dc.l PROTMENU_TXT
- dc.l CONTROL_OPTS
- ;8
- dc.l LOADMENU_TXT
- dc.l LOADMENU_OPTS
- ;9
- dc.l SAVEMENU_TXT
- dc.l SAVEMENU_OPTS
- ;10
- dc.l LEVELDISK_TXT
- dc.l ASKFORDISK_OPTS
-
-
- EMPTYSLOTNAME:
- ; 0123456789012345678901234567890123456789
- dc.b ' EMPTY SLOT '
-
- LOADMENU_TXT:
- ; 0123456789012345678901234567890123456789
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' LOAD A SAVED POSITION: ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- LSLOTA:
- dc.b ' ' ;9
- dc.b ' ' ;0
- LSLOTB:
- dc.b ' ' ;1
- dc.b ' ' ;2
- LSLOTC:
- dc.b ' ' ;3
- dc.b ' ' ;4
- LSLOTD:
- dc.b ' ' ;5
- dc.b ' ' ;6
- LSLOTE:
- dc.b ' ' ;7
- dc.b ' ' ;8
- LSLOTF:
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' * CANCEL * ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
-
- LOADMENU_OPTS:
- dc.w 0,9,40,1
- dc.w 0,11,40,1
- dc.w 0,13,40,1
- dc.w 0,15,40,1
- dc.w 0,17,40,1
- dc.w 0,19,40,1
- dc.w 14,21,12,1
- dc.w -1
-
- LEVELDISK_TXT:
- ; 0123456789012345678901234567890123456789
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' IF PLAYING FROM DISK, PLEASE INSERT ' ;0
- dc.b ' LEVELS DISK IN DRIVE DF0: ' ;0
- dc.b ' ' ;0
- dc.b ' PRESS MOUSE BUTTON WHEN READY.. ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
- dc.b ' ' ;0
-
-
- SAVEMENU_TXT:
- ; 0123456789012345678901234567890123456789
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' SAVE CURRENT POSITION: ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- SSLOTA:
- dc.b ' ' ;9
- dc.b ' ' ;0
- SSLOTB:
- dc.b ' ' ;1
- dc.b ' ' ;2
- SSLOTC:
- dc.b ' ' ;3
- dc.b ' ' ;4
- SSLOTD:
- dc.b ' ' ;5
- dc.b ' ' ;6
- SSLOTE:
- dc.b ' ' ;7
- dc.b ' ' ;8
- SSLOTF:
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' * CANCEL * ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
-
- SAVEMENU_OPTS:
- dc.w 0,9,40,1
- dc.w 0,11,40,1
- dc.w 0,13,40,1
- dc.w 0,15,40,1
- dc.w 0,17,40,1
- dc.w 0,19,40,1
- dc.w 14,21,12,1
- dc.w -1
-
-
- ASKFORDISK_TXT:
- ; 0123456789012345678901234567890123456789
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' PLEASE INSERT VOLUME: ' ;3
- dc.b ' ' ;4
- VOLLINE:
- dc.b ' ' ;9
- dc.b ' ' ;9
- dc.b ' PRESS MOUSE BUTTON ' ;5
- dc.b ' WHEN DISK ACTIVITY ' ;6
- dc.b ' FINISHES ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
-
- ASKFORDISK_OPTS:
- dc.w -1
-
-
- ONEPLAYERMENU_TXT:
- ; 0123456789012345678901234567890123456789
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- CURRENTLEVELLINE:
- dc.b ' *** A.F DEMO LEVEL *** ' ;1
- dc.b ' ' ;2
- dc.b ' 1 PLAYER ' ;3
- dc.b ' ' ;4
- dc.b ' PLAY GAME ' ;5
- dc.b ' ' ;6
- dc.b ' CONTROL OPTIONS ' ;7
- dc.b ' ' ;8
- dc.b ' GAME CREDITS ' ;9
- dc.b ' ' ;0
- dc.b ' LOAD POSITION ' ;1
- dc.b ' ' ;2
- PASSWORDLINE:
- dc.b ' SAVE POSITION ' ;1
- dc.b ' ' ;4
- dc.b ' ' ;6
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
-
- ONEPLAYERMENU_OPTS:
- dc.w 0,11,40,1
- dc.w 16,13,8,1
- dc.w 15,15,10,1
- dc.w 12,17,16,1
- dc.w 14,19,12,1
- dc.w 12,21,16,1
- dc.w 12,23,16,1
- dc.w -1
-
-
- MASTERPLAYERMENU_TXT:
- ; 0123456789012345678901234567890123456789
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' 2 PLAYER MASTER ' ;2
- dc.b ' ' ;3
- CURRENTLEVELLINEM:
- dc.b ' LEVEL 1 : THE GATE ' ;4
- dc.b ' ' ;5
- dc.b ' PLAY GAME ' ;6
- dc.b ' ' ;7
- dc.b ' CONTROL OPTIONS ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
-
- MASTERPLAYERMENU_OPTS:
- dc.w 12,12,16,1
- dc.w 6,14,28,1
- dc.w 15,16,10,1
- dc.w 12,18,16,1
- dc.w -1
-
- SLAVEPLAYERMENU_TXT:
- ; 0123456789012345678901234567890123456789
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;9
- dc.b ' ' ;1
- dc.b ' 2 PLAYER SLAVE ' ;4
- dc.b ' ' ;3
- dc.b ' PLAY GAME ' ;2
- dc.b ' ' ;5
- dc.b ' CONTROL OPTIONS ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;3
- dc.b ' ' ;7
- dc.b ' ' ;7
- dc.b ' ' ;3
- dc.b ' ' ;3
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;9
- dc.b ' ' ;9
- dc.b ' ' ;9
- dc.b ' ' ;9
-
-
- PROTMENU_TXT:
- ; 0123456789012345678901234567890123456789
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' TYPE IN THREE DIGIT CODE FROM MANUAL : ' ;2
- dc.b ' ' ;3
- PROTLINE:
- dc.b ' TABLE 00 ROW 00 COLUMN 00 ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
-
-
-
- SLAVEPLAYERMENU_OPTS:
- dc.w 12,12,16,1
- dc.w 15,14,10,1
- dc.w 12,16,16,1
- dc.w -1
-
-
- PLAYER_OPTS:
- ; 0123456789012345678901234567890123456789
- dc.b ' 1 PLAYER '
- dc.b ' 2 PLAYER MASTER '
- dc.b ' 2 PLAYER SLAVE '
-
- LEVEL_OPTS:
- ; 0123456789012345678901234567890123456789
- dc.b ' CU AMIGA *EXCLUSIVE* DEMO '
- dc.b ' LEVEL 2 : STORAGE BAY '
- dc.b ' LEVEL 3 : SEWER NETWORK '
- dc.b ' LEVEL 4 : THE COURTYARD '
- dc.b ' LEVEL 5 : SYSTEM PURGE '
- dc.b ' LEVEL 6 : THE MINES '
- dc.b ' LEVEL 7 : THE FURNACE '
- dc.b ' LEVEL 8 : TEST ARENA GAMMA '
- dc.b ' LEVEL 9 : SURFACE ZONE '
- dc.b ' LEVEL 10 : TRAINING AREA '
- dc.b ' LEVEL 11 : ADMIN BLOCK '
- dc.b ' LEVEL 12 : THE PIT '
- dc.b ' LEVEL 13 : STRATA '
- dc.b ' LEVEL 14 : REACTOR CORE '
- dc.b ' LEVEL 15 : COOLING TOWER '
- dc.b ' LEVEL 16 : COMMAND CENTRE '
-
- CONTROL_TXT:
- ; 0123456789012345678901234567890123456789
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' DEFINE CONTROLS ' ;2
- dc.b ' ' ;3
- KEY_LINES:
- dc.b ' TURN LEFT LCK ' ;4
- dc.b ' TURN RIGHT RCK ' ;5
- dc.b ' FORWARDS UCK ' ;6
- dc.b ' BACKWARDS DCK ' ;7
- dc.b ' FIRE RAL ' ;8
- dc.b ' OPERATE DOOR/LIFT/SWITCH SPC ' ;9
- dc.b ' RUN RSH ' ;0
- dc.b ' FORCE SIDESTEP RAM ' ;1
- dc.b ' SIDESTEP LEFT . ' ;2
- dc.b ' SIDESTEP RIGHT / ' ;3
- dc.b ' DUCK D ' ;4
- dc.b ' LOOK BEHIND L ' ;5
- dc.b ' JUMP KP0 ' ;6
- dc.b ' LOOK UP ] ' ;7
- dc.b ' LOOK DOWN # ' ;8
- dc.b ' CENTRE VIEW ; ' ;9
- dc.b ' NEXT WEAPON RET ' ;9
- dc.b ' ' ;9
- dc.b ' OTHER CONTROLS ' ;0
- dc.b ' ' ;1
- dc.b '1-0 Select Weapon P Pause' ;2
- dc.b 'F1 Zoom in on map F3 4/8 Channel Sound' ;3
- dc.b 'F2 Zoom out on map F4 Mono/Stereo Sound' ;4
- dc.b 'F5 Recall Message F6 Render Quality'
- dc.b ' Keypad 1-9 scroll map, 5 centres ' ;5
- dc.b ' ' ;7
- dc.b ' MAIN MENU ' ;8
- dc.b ' ' ;1
-
- CONTROL_OPTS:
- dc.w 5,4,30,1
- dc.w 5,5,30,1
- dc.w 5,6,30,1
- dc.w 5,7,30,1
- dc.w 5,8,30,1
- dc.w 5,9,30,1
- dc.w 5,10,30,1
- dc.w 5,11,30,1
- dc.w 5,12,30,1
- dc.w 5,13,30,1
- dc.w 5,14,30,1
- dc.w 5,15,30,1
- dc.w 5,16,30,1
- dc.w 5,17,30,1
- dc.w 5,18,30,1
- dc.w 5,19,30,1
- dc.w 5,20,30,1
- dc.w 15,30,10,1
- dc.w -1
-
- PLOPT: dc.w 0
-
- INSTRUCTIONS_TXT:
- ; 0123456789012345678901234567890123456789
- dc.b 'Main controls: ' ;1
- dc.b ' ' ;2
- dc.b 'Curs Keys = Forward / Backward ' ;3
- dc.b ' Turn left / right ' ;4
- dc.b ' Right Alt = Fire ' ;5
- dc.b ' Right Shift = Run ' ;6
- dc.b ' > = Slide Left ' ;7
- dc.b ' ? = Slide Right ' ;8
- dc.b ' SPACE = Operate Door/Lift ' ;9
- dc.b ' D = Duck ' ;0
- dc.b ' J = Joystick Control ' ;1
- dc.b ' K = Keyboard Control ' ;2
- dc.b ' ' ;3
- dc.b ' 1,2,3 = Select weapon ' ;4
- dc.b ' ENTER = Toggle screen size' ;5
- dc.b ' ESC = Quit ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b 'The one player game has no objective and' ;9
- dc.b 'the only way to finish is to die or quit' ;0
- dc.b ' ' ;1
- dc.b 'The two-player game is supposed to be a ' ;2
- dc.b 'fight to the death but will probably be ' ;3
- dc.b 'a fight-till-we-find-the-rocket-launcher' ;4
- dc.b 'then-blow-ourselves-up type game. ' ;5
- dc.b ' ' ;6
- dc.b 'LOOK OUT FOR TELEPORTERS: They usually ' ;7
- dc.b 'have glowing red walls and overhead ' ;8
- dc.b 'lights. Useful for getting behind your ' ;9
- dc.b ' opponent! ' ;0
- dc.b ' Just a taster of what is to come.... ' ;1
- dc.b ' ' ;0
-
- INSTRUCTIONS_OPTS:
- dc.w 0,0,0,1
- dc.w -1
-
- CREDITMENU_TXT:
-
- ; 0123456789012345678901234567890123456789
- dc.b ' Programming, Game Code, Graphics ' ;0
- dc.b ' Game Design and Manual ' ;1
- dc.b ' Andrew Clitheroe ' ;2
- dc.b ' ' ;3
- dc.b ' Alien and Scenery Graphics ' ;4
- dc.b ' Michael Green ' ;5
- dc.b ' ' ;6
- dc.b ' 3D Object Designer ' ;7
- dc.b ' Charles Blessing ' ;8
- dc.b ' ' ;9
- dc.b ' Level Design ' ;0
- dc.b 'Jackie Lang Michael Green Ben Chanter' ;1
- dc.b ' ' ;3
- dc.b ' ' ;3
- dc.b ' Creative Director ' ;4
- dc.b ' Martyn Brown ' ;5
- dc.b ' ' ;6
- dc.b ' Project Manager and Manual ' ;7
- dc.b ' Phil Quirke-Webster ' ;8
- dc.b ' ' ;9
- dc.b ' Music ' ;0
- dc.b ' Ben "666" Chanter ' ;1
- dc.b ' ' ;2
- dc.b ' Cover Illustration and Logo ' ;3
- dc.b ' Kevin Jenkins ' ;4
- dc.b ' ' ;5
- dc.b ' Packaging and Manual Design ' ;6
- dc.b ' Paul Sharp ' ;7
- dc.b ' ' ;8
- dc.b ' QA and Playtest ' ;9
- dc.b ' Too numerous to mention here! ' ;0
- dc.b ' ' ;1
-
- dc.b ' Serial Link and 3D Object Editor: ' ;4
- dc.b ' by ' ;5
- dc.b ' Charles Blessing ' ;6
- dc.b ' ' ;7
- dc.b ' Graphics: ' ;8
- dc.b ' by ' ;9
- dc.b ' Mike Oakley ' ;0
- dc.b ' ' ;1
- dc.b ' Title Picture ' ;2
- dc.b ' by ' ;3
- dc.b ' Mike Green ' ;4
- dc.b ' ' ;5
- dc.b ' Inspiration, incentive, moral support, ' ;6
- dc.b ' level design and plenty of tea ' ;7
- dc.b ' generously supplied by ' ;8
- dc.b ' ' ;9
- dc.b ' Jackie Lang ' ;0
- dc.b ' ' ;1
- dc.b ' Music for the last demo composed ' ;2
- dc.b ' by the inexpressibly evil: ' ;3
- dc.b ' ' ;8
- dc.b ' *BAD* BEN CHANTER ' ;9
- dc.b ' ' ;0
- dc.b ' Sadly no room for music this time ' ;1
- dc.b ' ' ;7
- dc.b ' ' ;7
-
- CREDITMENU_OPTS:
- dc.w 0,0,1,1
- dc.w -1
-
-
- ; 0123456789012345678901234567890123456789
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
- dc.b ' ' ;2
- dc.b ' ' ;3
- dc.b ' ' ;4
- dc.b ' ' ;5
- dc.b ' ' ;6
- dc.b ' ' ;7
- dc.b ' ' ;8
- dc.b ' ' ;9
- dc.b ' ' ;0
- dc.b ' ' ;1
-
-
- ********************************************************
-
- PUTIN32:
-
- moveq #0,d2
- moveq #0,d3
- moveq #0,d4
- moveq #0,d5
- moveq #0,d6
- moveq #0,d7
-
- move.w #31,d2
- p32loop:
- moveq #0,d5
- move.l (a0)+,d3
- move.w d3,d4
- swap d3
- move.b d4,d5
- lsr.w #8,d4
-
- muls d0,d3
- muls d0,d4
- muls d0,d5
- lsr.l #8,d3
- lsr.l #8,d4
- lsr.l #8,d5
- move.w d3,d6
- swap d3
- move.w d6,d3
- move.w d4,d6
- swap d4
- move.w d6,d4
- move.w d5,d6
- swap d5
- move.w d6,d5
- and.w #%11110000,d3
- and.w #%11110000,d4
- and.w #%11110000,d5
- lsl.w #4,d3
- add.w d4,d3
- lsr.w #4,d5
- add.w d5,d3
- move.w d3,2(a1)
- swap d3
- swap d4
- swap d5
- and.w #%1111,d3
- and.w #%1111,d4
- and.w #%1111,d5
- lsl.w #8,d3
- lsl.w #4,d4
- add.w d4,d3
- add.w d5,d3
- move.w d3,2+(132*4)(a1)
- addq #4,a1
- dbra d2,p32loop
-
-
- rts
-
- **************************************
-
- FADEAMOUNT: dc.w 0
- FADEVAL: dc.w 0
-
- FADEUPTITLE:
-
- moveq #0,d0
- moveq #0,d1
- move.w FADEVAL,d0
- move.w FADEAMOUNT,d1
- fadeuploop:
-
- move.l #TITLEPAL,a0
- move.l #TITLEPALCOP,a1
-
- wvb:
- btst #5,$dff000+intreqrl
- beq.s wvb
- move.w #$20,$dff000+intreq
-
- bsr PUTIN32
- add.w #4,a1
- bsr PUTIN32
- add.w #4,a1
- bsr PUTIN32
- add.w #4,a1
- bsr PUTIN32
-
- addq.w #8,d0
- dbra d1,fadeuploop
-
- subq #8,d0
- move.w d0,FADEVAL
-
- rts
-
- CLEARTITLEPAL:
- PRSDP
- move.l #TITLEPALCOP,a0
- move.w #7,d1
- clrpal:
- move.w #31,d0
- clr32
- move.w #0,2(a0)
- addq #4,a0
- dbra d0,clr32
- addq #4,a0
- dbra d1,clrpal
- PRSDQ
- rts
-
- FADEDOWNTITLE:
-
- move.w FADEVAL,d0
- move.w FADEAMOUNT,d1
- fadedownloop:
-
- move.l #TITLEPAL,a0
- move.l #TITLEPALCOP,a1
-
- .wvb:
- btst #5,$dff000+intreqrl
- beq.s .wvb
- move.w #$20,$dff000+intreq
-
- bsr PUTIN32
- add.w #4,a1
- bsr PUTIN32
- add.w #4,a1
- bsr PUTIN32
- add.w #4,a1
- bsr PUTIN32
-
- subq.w #8,d0
- dbra d1,fadedownloop
-
- addq #8,d0
- move.w d0,FADEVAL
-
- rts
-
- LOADTITLESCRN2:
-
-
- move.l #MEMF_CLEAR,d1
- move.l #52400,d0
- move.l 4.w,a6
- jsr _LVOAllocMem(a6)
- tst.l d0
- beq .nomem
-
- move.l d0,tempptr
-
- move.l TITLESCRNPTR,d1
- move.l #1005,d2
- move.l doslib,a6
- jsr -30(a6)
- move.l d0,handle
- move.l d0,d1
- move.l doslib,a6
- ; move.l TITLESCRNADDR,d2
- move.l tempptr,d2
- move.l #10240*7,d3
- jsr -42(a6)
- move.l doslib,a6
- move.l handle,d1
- jsr -36(a6)
-
-
- move.l TITLESCRNADDR,a0
- move.l tempptr,d0
-
- moveq #0,d1
- lea WorkSpace,a1
- lea $0,a2
- jsr unLHA
-
- move.l tempptr,a1
- move.l #52400,d0
- CALLEXEC FreeMem
-
- .nomem
-
- rts
-
- tempptr dc.l 0
-
-
- GETTITLEMEM:
- move.l #2,d1
- move.l #10240*7,d0
- move.l 4.w,a6
- jsr -198(a6)
- move.l d0,TITLESCRNADDR
-
- move.l #$dff000-$2cdfe4,a4
-
- move.l #2,d1
- move.l #258*16*5,d0
- move.l 4.w,a6
- jsr -198(a6)
- move.l d0,OPTSPRADDR
-
- rts
-
- ProtChkJLev1:
-
- PROTSETUP:
- incbin "ab3:includes/protsetupenc"
-
- ; Need to: Decode protection calling
- ; routine
- ; use null values to call it and erase
- ; it from memory
- ; erase this routine and return.
-
- ; include "ab3:source/protsetup"
-
-
- RELEASETITLEMEM:
- move.l TITLESCRNADDR,d1
- move.l d1,a1
- move.l #10240*7,d0
- move.l 4.w,a6
- jsr -210(a6)
-
- move.l OPTSPRADDR,d1
- move.l d1,a1
- move.l #258*80,d0
- move.l 4.w,a6
- jsr -210(a6)
- rts
-
-
- PROTCALLENC:
- ; incbin "ab3:source/protcallenc.bin
-
- ; one pass, all instructions executed.
- ; must call protection routine,store
- ; value somewhere, call ask routine,
- ; compare returned value, if correct
- ; set up all values, then return.
-
- ; include "ab3:source_4000/protcallenc"
-
- ENDPROT:
-
- LOADTITLESCRN:
-
- move.l #TITLESCRNNAME,d1
- move.l #1005,d2
- move.l doslib,a6
- jsr -30(a6)
- move.l d0,handle
- move.l d0,d1
- move.l doslib,a6
- move.l TITLESCRNADDR,d2
- move.l #10240*7,d3
- jsr -42(a6)
- move.l doslib,a6
- move.l handle,d1
- jsr -36(a6)
-
- rts
-
- RVAL2: dc.w 0
-
- SETUPTITLESCRN:
-
- PRSDR
- move.l #OPTCOP,a0
- move.l #rain,a1
- move.w #255,d0
- putinrain:
- move.w (a1)+,d1
- move.w d1,6(a0)
- move.w d1,6+4(a0)
- move.w d1,6+8(a0)
- move.w d1,6+12(a0)
- add.w #4*14,a0
-
- dbra d0,putinrain
-
- ; Put addr into copper.
- move.l OPTSPRADDR,d0
- move.w d0,tsp0l
- swap d0
- move.w d0,tsp0h
- swap d0
- add.l #258*16,d0
- move.w d0,tsp1l
- swap d0
- move.w d0,tsp1h
- swap d0
- add.l #258*16,d0
- move.w d0,tsp2l
- swap d0
- move.w d0,tsp2h
- swap d0
- add.l #258*16,d0
- move.w d0,tsp3l
- swap d0
- move.w d0,tsp3h
- swap d0
- add.l #258*16,d0
- move.w d0,tsp4l
- swap d0
- move.w d0,tsp4h
-
- move.l #nullspr,d0
- move.w d0,tsp5l
- move.w d0,tsp6l
- move.w d0,tsp7l
- swap d0
- move.w d0,tsp5h
- move.w d0,tsp6h
- move.w d0,tsp7h
-
- move.l TITLESCRNADDR,d0
- move.w d0,ts1l
- swap d0
- move.w d0,ts1h
- swap d0
- add.l #10240,d0
- move.w d0,ts2l
- swap d0
- move.w d0,ts2h
- swap d0
- add.l #10240,d0
- move.w d0,ts3l
- swap d0
- move.w d0,ts3h
- swap d0
- add.l #10240,d0
- move.w d0,ts4l
- swap d0
- move.w d0,ts4h
- swap d0
- add.l #10240,d0
- move.w d0,ts5l
- swap d0
- move.w d0,ts5h
- swap d0
- add.l #10240,d0
- move.w d0,ts6l
- swap d0
- move.w d0,ts6h
- swap d0
- add.l #10240,d0
- move.w d0,ts7l
- swap d0
- move.w d0,ts7h
- rts
-
- RVAL1: dc.w 0
-
- DummyAdds:
- dc.l dummy-78935450
- dc.l dummy-78935450
- dc.l dummy-78935450
- dc.l dummy-78935450
- dc.l dummy-78935450
- dc.l dummy-78935450
- dc.l dummy-78935450
- dc.l dummy-78935450
- dc.l dummy-78935450
- dc.l dummy-78935450
-
- dummycall
- dc.w $4e75-123
-
- protspace:
- ;ds.l 200
-
- include "ab3:source_4000/LEVEL_BLURB"
-
- font:
- incbin "Starquake.font.bin"
-
- rain: incbin "optcop"
-
- include "ab3:demo/menu/menu_v2.s"